package com.yifang.yibingproject.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;

/**
 * 系统权限
 */
@Data
@TableName("t_sys_auth")
public class SysAuthEntity extends BaseEntity implements GrantedAuthority {

    /**
     * 父级目录ID，根目录root
     */
    private String parentId;

    /**
     * 同层级下（parentId）的排序
     */
    private Integer sortIndex;

    /**
     * 权限类型：0.目录 1.菜单 2.按钮 3.接口
     */
    private Integer type;

    /**
     * 层级（根目录为0）
     */
    private Integer level;

    /**
     * 名称
     */
    private String name;

    /**
     * 图标
     */
    private String icon;

    /**
     * 菜单路径
     */
    private String path;

    /**
     * 权限标识
     */
    private String perms;

    /**
     * 菜单导航组件名称
     */
    private String componentName;

    /**
     * 菜单导航组件路径
     */
    private String componentPath;

    /**
     * 激活菜单
     * 当路由设置了该属性，则会高亮相对应的侧边栏。
     * 这在某些场景非常有用，比如：一个文章的列表页路由为：/article/list
     * 点击文章进入文章详情页，这时候路由为/article/1，但你想在侧边栏高亮文章列表的路由，就可以进行如下设置
     */
    private String activeMenu;

    /**
     * 菜单在标签导航栏中是否固定
     * 若果设置为true，它则会固定在tags-view中(默认 false)
     */
    private Boolean affix;

    /**
     * 总是显示子菜单
     * 当你一个路由下面的 children 声明的路由大于1个时，自动会变成嵌套的模式--如组件页面
     * 只有一个时，会将那个子路由当做根路由显示在侧边栏--如引导页面
     * 若你想不管路由下面的 children 声明的个数都显示你的根路由
     * 你可以设置 alwaysShow: true，这样它就会忽略之前定义的规则，一直显示根路由
     */
    private Boolean alwaysShow;

    /**
     * 是否在面包屑导航中显示该菜单
     * 如果设置为false，则不会在breadcrumb面包屑中显示(默认 true)
     */
    private Boolean breadcrumb;

    /**
     * 重定向路径
     * 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
     */
    private String redirect;

    /**
     * 禁止导航页面缓存
     * 如果设置为true，则不会被 <keep-alive> 缓存(默认 false)
     */
    private Boolean noCache;

    /**
     * 是否隐藏
     */
    private Boolean hidden;

    @Override
    public String getAuthority() {
        return perms;
    }
}
